iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
1
AI & Data

AI的介紹-水果系列 第 4

Day 4 AI 灰階與輪廓概念-2

  • 分享至 

  • xImage
  •  

大家好,歡迎初學者來到灰階與輪廓學習的第二堂課

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

blurred = cv2.GaussianBlur(gray, (11, 11), 0)

canny = cv2.Canny(blurred, 30, 150)

result = np.hstack([gray, blurred, canny])

https://ithelp.ithome.com.tw/upload/images/20200919/20120312aVJS3wSCVl.png

  • cv2.cvtColor
  • cv2.GaussianBlur
  • cv2.Canny
  • np.hstack
  1. cv2.cvtColor:

    • cv2.cvtColor 作為轉換灰階的工具,將彩色的圖片或影像轉成灰階呈現,將每一個變成 0,1 給予電腦做為計算,如圖的最左邊,我們對圖灰階以後,可以進行高斯模糊運算,讓圖像的稜稜角角變得更明確,若是沒有高斯模糊會讓圖形在後面所產生的辨識更加困難。
  2. cv2.GaussianBlur:

    • cv2.GaussianBlur 高斯模糊效果,讓圖形的各個鋒利邊角更加明確。
  3. cv2.Canny:

    • cv2.Canny 邊緣檢測,將劃分好的圖形樣式利用邊緣切割方式繪畫出來,出來的方式會是像最後邊圖形出來的圈圈一樣,不過要形成這個樣子還少一個運算方式。
  4. np.hstack:

    • np.hstack 整合型的做法,它是像是每個資料整合在一起,一併排列在一起做呈現!。https://ithelp.ithome.com.tw/upload/images/20200919/20120312gJ5kghEhFt.png

    以上圖所示最右邊的圖形為輪廓的方法之一,但輪廓事實上還有很多方式可以進行,以下我來介紹其他的方式。

cv2.threshold(img,127,255,0)
cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img,contours,3,(0,255,0),3)

  • cv2.threshold
  • cv2.findContours
  • cv2.drawContours
  1. cv2.threshold:

    • cv2.threshold 將圖形轉為黑白的方式呈現,其中的127與255為黑白的相關參數,後面的 0 則是轉黑白的模式為主,但通常會以 cv2.THRESH_BINARY 呈現。
  2. cv2.findContours:

    • cv2.findContours 利用所切割出來的黑白圖形來找尋輪廓的點,這些點都有各別的方式去找尋,上方程式碼中的 cv2.RETR_TREE 以及 cv2.CHAIN_APPROX_SIMPLE 各為找尋的方式點,主要是一個範圍問題,通常會以找尋的中心點為一個大小,如果選擇的功能範圍越大,它就會擴展的越大,可是也會造成誤判的機率提升。
  3. cv2.drawContours:

    • cv2.drawContours 為繪製輪廓的方法,此方法就是依照前面已經都準備好的參數餵給他,直接當作來源使用,它將看到的部份一一的繪製出來。https://ithelp.ithome.com.tw/upload/images/20200919/20120312JKaxCsxQgu.png

另外有一個很特別的畫法,跟各位介紹這個方式,叫做凸框,凸框其實是用在如果今天在畫圖的過程中,突然有物體遮擋到在前面,或是有斷了路徑,它可以根據你所繪出的特徵直接連起來。

  • cv2.convexHull
  1. cv2.convexHull:
    • cv2.convexHull(輪廓參數,可以省略,繪製的方向 True 為順時針 False 為逆時針,退回在凸包的點上 True or false)
      https://ithelp.ithome.com.tw/upload/images/20200919/20120312PbAPDsec4t.png

參考資料
https://dotblogs.com.tw/coding4fun/2017/11/09/125723
https://www.w3resource.com/numpy/manipulation/hstack.php
https://www.itread01.com/content/1545593282.html

以上資料都為截圖上的精華,其實利用這些小方法就可以做到很大的事情,先將小小的方法交給各位,之後會實作給各位看看。

Google 是一個很好的工具,但是會做不一定會搜尋,會搜尋又不一定會做,給予大家更好的理解方式,盡可能地分析給大家聽

謝謝大家的聆聽,我們下篇見


上一篇
Day3 AI 灰階與輪廓概念
下一篇
Day 5 AI 灰階與輪廓概念-3
系列文
AI的介紹-水果30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言